package com.zp.self.module.level_4_算法练习.数据结构.数组;


import java.util.ArrayList;
import java.util.List;

public class 力扣_119_杨辉三角II {
    public static void main(String[] args) {
        List<Integer> generate =new 力扣_119_杨辉三角II().generate(3);
        List<Integer> generate2 =new 力扣_119_杨辉三角II().generate(1);
        List<Integer> generate3 =new 力扣_119_杨辉三角II().generate(0);
        for (Integer integer : generate)
            System.out.print(integer+",");
        System.out.println();

        for (Integer integer : generate2)
            System.out.print(integer+",");
        System.out.println();

        for (Integer integer : generate3)
            System.out.print(integer+",");
        System.out.println();
    }

    /**
     * 给定一个非负索引 rowIndex，返回「杨辉三角」的第 rowIndex 行。
     * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
     *
     * 分析：
     *      注意下标越界
     *      每行数组的头尾需手动插入
     *
     * 边界值注意：
     * numRows =  1、2
     **/
    public List<Integer> generate(int numRows) {
        List<Integer> proRow = null;
        List<Integer> row = null;
        for (int i = 1; i <= numRows+1; i++) {
            row = new ArrayList<>();
            row.add(1);
            if(i!=1){
                for (int j = 1; j < i-1; j++)
                    row.add(proRow.get(j-1)+proRow.get(j));
                row.add(1);
            }
            proRow = row;
        }
        return row;
    }


}
